#!/bin/sh
set -eu

. /etc/default/earlyoom

do_start() {
	if [ -f /var/run/earlyoom.pid ];
	then
		if ps -p "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1
		then
			echo "earlyoom is already running."
			exit 0
		fi
	fi
	echo "Starting earlyoom..."
	# shellcheck disable=2086
	nohup /usr/bin/earlyoom $EARLYOOM_ARGS > /var/log/earlyoom.log 2>&1 &
	echo "$!" > /var/run/earlyoom.pid
	exit 0
}

do_stop() {
	if [ -f /var/run/earlyoom.pid ];
	then
		if ps -p "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1
		then
			echo "Stopping earlyoom..."
			kill -15 "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1
			exit 0
		fi
	fi
	echo "earlyoom is not running..."
}

do_force_stop() {
	if [ -f /var/run/earlyoom.pid ];
	then
		if ps -p "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1
		then
			echo "Killing earlyoom..."
			kill -9 "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1
			exit 0
		fi
	fi
	echo "earlyoom appears to not be running."
	exit 0
}

do_restart() {
	do_stop
	do_start
}

do_status() {
	if [ -f /var/run/earlyoom.pid ];
	then
		if ps -p "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1
		then
			echo "earlyoom is running with pid $(cat /var/run/earlyoom.pid)."
			exit 0
		fi
	fi
	echo "earlyoom is not running."
}

do_help() {
	echo "USAGE: rc.earlyoom (start|stop|force-stop|restart|status)"
	exit 0
}

if [ -z "${1-}" ];
then
	do_help
fi

case $1 in
	start)
		do_start
		;;
	stop)
		do_stop
		;;
	restart)
		do_restart
		;;
	force-stop)
		do_force_stop
		;;
	status)
		do_status
		;;
	*)
		do_help
		;;
esac
